package pe.gob.mintra.trabajadoreshogar.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.gob.mintra.trabajadoreshogar.bean.DatLab;
import pe.gob.mintra.trabajadoreshogar.bean.Gratifpnav;
import pe.gob.mintra.trabajadoreshogar.bean.Liquidacion;
import pe.gob.mintra.trabajadoreshogar.bean.Vacacion;
import pe.gob.mintra.trabajadoreshogar.bean.VwVac;
import pe.gob.mintra.trabajadoreshogar.dao.VacacionDAO;
import pe.gob.mintra.trabajadoreshogar.factory.MyBatisConnectionFactory;

public class VacacionDAOImp implements VacacionDAO {
	
	private final static Logger logVacacionDAOImp = Logger.getLogger(VacacionDAOImp.class);
	
	private SqlSessionFactory sqlSessionFactory;

	public VacacionDAOImp() {
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}
	

	@Override
	public void insertarVacacion(Vacacion objVacacion){
		
		SqlSession session = sqlSessionFactory.openSession();

		try {
			
			session.insert("Vacacion.insertarVacacion",objVacacion);
		} 
		catch(Exception ex){
			session.rollback();
			logVacacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}

	}


	@Override
	public List<Vacacion> obtenerVacacion(Liquidacion objLiquidacion) {
		List<Vacacion> objVacacion= new ArrayList<Vacacion>();
		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			objVacacion = (List<Vacacion>) session.selectList(
					"Vacacion.obtenerVacacion", objLiquidacion);
		}catch(Exception ex){
			logVacacionDAOImp.error(ex.getMessage());
		}finally{
			session.close();
		}
		

		return objVacacion;
	}


	@Override
	public void eliminarVacacion(Vacacion objVacacion) {
		SqlSession session = sqlSessionFactory.openSession();

		try {
			
			session.delete("Vacacion.eliminarVacacion",objVacacion);
		} 
		catch(Exception ex){
			session.rollback();
			logVacacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}
		
	}


	@Override
	public void actualizarVacacion(Vacacion objVacacion) {
		SqlSession session = sqlSessionFactory.openSession();

		try {
			
			session.update("Vacacion.actualizarVacacion",objVacacion);
		} 
		catch(Exception ex){
			session.rollback();
			logVacacionDAOImp.error(ex.getMessage());
		}
		finally {
			session.close();
		}

		
	}


	@Override
	public List<VwVac> lstVacacionReporte(DatLab objDatLab) {
		List<VwVac> lstVistaVac= new ArrayList<VwVac>();
		SqlSession session = sqlSessionFactory.openSession();
		
		try{
			lstVistaVac = (List<VwVac>) session.selectList(
					"Vacacion.obtenerVistaVacacion", objDatLab);
		}catch(Exception ex){
			logVacacionDAOImp.error(ex.getMessage());
		}finally{
			session.close();
		}
		

		return lstVistaVac;
	}

}
